<html>
  <head>
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <meta http-equiv="Content-Language" content="en" />
    <title>skalibs: how to upgrade</title>
    <meta name="Description" content="skalibs: How to upgrade" />
    <meta name="Keywords" content="skalibs installation upgrade" />
    <!-- <link rel="stylesheet" type="text/css" href="//skarnet.org/default.css" /> -->
  </head>
<body>

<p>
<a href="index.html">skalibs</a><br />
<a href="//skarnet.org/software/">Software</a><br />
<a href="//skarnet.org/">skarnet.org</a>
</p>

<h2> in 2.7.0.0 </h2>

<ul>
 <li> New functions: <tt>ipc_timed_sendv()</tt>, <tt>unlink_void()</tt>,
<tt>skagetln_loose()</tt>, <tt>skagetlnsep_loose()</tt>,
<tt>genset_deepfree()</tt>, <tt>gensetdyn_deepfree()</tt> </li>
 <li> The <a href="libstddjb/djbunix.html">dir_close()</a> function now returns void
and leaves errno unchanged. </li>
 <li> The <tt>absolutepath()</tt> and <tt>sarealpath_tmp()</tt> functions, as well
as the <tt>avl*_deletenode()</tt>, <tt>skalibs/mininetstring.h</tt> and <em>prot</em>
families of functions, have been removed. </li>
 <li> <a href="libstddjb/djbunix.html">skalibs/djbunix.h</a> does not include
<tt>skalibs/env.h</tt> anymore. </li>
</ul>

<h2> in 2.6.4.0 </h2>

<ul>
 <li> New functions: <a href="libstddjb/djbunix.html">execvep_loose()</a>,
<tt>byte_zzero()</tt>, <a href="libstddjb/djbunix.html">openb_read()</a>,
<tt>sig0_scan</tt> </li>
 <li> New family of functions: <a href="libdatastruct/genqdyn.html">skalibs/genqdyn.h</a> </li>
</ul>

<h2> in 2.6.3.1 </h2>

<ul>
 <li> No functional changes. </li>
</ul>

<h2> in 2.6.3.0 </h2>

<ul>
 <li> New dir_fd function wrapping dirfd() (Solaris doesn't have dirfd()). </li>
 <li> memmem implementation for platforms that don't provide it. </li>
 <li> memmem wrappers: byte_search, siovec_search. </li>
 <li> New functions: atomic_symlink, skagetlnmaxsep, child_spawn3 </li>
 <li> New header: <tt>skalibs/posixplz.h</tt>. Some header reorganization. </li>
 <li> New family of functions: <tt>skalibs/textmessage.h</tt>, <tt>skalibs/textclient.h</tt> </li>
 <li> <tt>skalibs/environ.h</tt> and <tt>skalibs/getpeereid.h</tt> are now obsolescent. </li>
</ul>

<h2> in 2.6.2.0 </h2>

<ul>
 <li> New functions: access_at(), skaclient_timed_aflush(). </li>
</ul>

<h2> in 2.6.1.0 </h2>

<ul>
 <li> New function: <a href="libstddjb/djbunix.html">lock_unx()</a>. </li>
</ul>

<h2> in 2.6.0.2 </h2>

<ul>
 <li> No functional changes. </li>
</ul>

<h2> in 2.6.0.1 </h2>

<ul>
 <li> <tt>openwritenclose()</tt> and <tt>openwritevnclose()</tt> now use
<a href="http://pubs.opengroup.org/onlinepubs/9699919799/functions/mkstemp.html">mkstemp()</a>
instead of relying on an unpredictable name (which required a random
generator to be fully initialized). </li>
</ul>


<h2> in 2.6.0.0 </h2>

<ul>
 <li> New functions: <tt>unixmessage_receiver_hasmsginbuf()</tt>,
<tt>skalibs_setgroups()</tt>, <tt>setgroups_with_egid()</tt>,
<tt>setgroups_and_gid()</tt>. The <tt>setgroups_and_gid()</tt>
function is the one that should be used, if possible: it does the
right thing even on the BSDs. (That's an achievement.) </li>
</ul>

<h2> in 2.5.1.1 </h2>

<ul>
 <li> No functional changes. </li>
</ul>

<h2> in 2.5.1.0 </h2>

<ul>
 <li> The <tt>xpathexec_*</tt> family of functions has been added to
<a href="libstddjb/djbunix.html">skalibs/djbunix.h</a>. </li>
</ul>

<h1> What has changed in skalibs </h1>

<h2> in 2.5.0.0 </h2>

<ul>
 <li> Support for old versions of OpenBSD dropped. At least OpenBSD 5.7
and newer are still supported. </li>
 <li> <tt>--enable-replace-libc</tt> compilation flag dropped </li>
 <li> <tt>skalibs/ushort.h</tt>, <tt>skalibs/uint.h</tt> and <tt>skalibs/ulong.h</tt>
removed. <tt>skalibs/types.h</tt> is now a generic header for fmtscan primitives
for various types. </li>
 <li> <tt>uint16</tt>, <tt>uint32</tt> and <tt>uint64</tt> types replaced with POSIX
<tt>uint16_t</tt>, <tt>uint32_t</tt> and <tt>uint64_t</tt>. </li>
 <li> APIs changed across all skalibs functions to support more POSIXly correct
types. Main benefit: correct 64-bit support on 64-bit archs with 32-bit int. </li>
</ul>

<h2> in 2.4.0.2 </h2>

<ul>
 <li> No functional changes. </li>
</ul>

<h2> in 2.4.0.1 </h2>

<ul>
 <li> No functional changes. </li>
</ul>

<h2> in 2.4.0.0 </h2>

<ul>
 <li> More support for advanced fd callbacks in <tt>unixmessage_sender</tt> and <tt>unixconnection</tt>. </li>
 <li> <tt>ipc_timed_send()</tt>, <tt>ipc_timed_recv()</tt> </li>
 <li> rt.lib sysdep removed; spawn.lib and timer.lib sysdeps added </li>
 <li> Leap second for 2016-12-31 23:59:60 UTC added </li>
 <li> Complete <a href="librandom/">librandom</a> rewrite </li>
 <li> <a href="libstddjb/alarm.html">skalibs/alarm.h</a> added </li>
</ul>

<h2> in 2.3.10.0 </h2>

<ul>
 <li> Support for advanced fd callbacks in <tt>unixmessage_sender</tt>. </li>
</ul>

<h2> in 2.3.9.0 </h2>

<ul>
 <li> New functions: <tt>bitarray_firstclear_skip</tt> and
<tt>bitarray_firstset_skip</tt>. </li>
</ul>

<h2> in 2.3.8.3 </h2>

<ul>
 <li> No functional changes. </li>
</ul>

<h2> in 2.3.8.2 </h2>

<ul>
 <li> No functional changes. </li>
</ul>

<h2> in 2.3.8.1 </h2>

<ul>
 <li> No functional changes. </li>
</ul>

<h2> in 2.3.8.0 </h2>

<ul>
 <li> The <tt>/etc/leapsecs.dat</tt> file is no longer necessary. </li>
</ul>

<h2> in 2.3.7.1 </h2>

<ul>
 <li> No functional changes. </li>
</ul>

<h2> in 2.3.7.0 </h2>

<ul>
 <li> New functions: <tt>atomic_rm_rf()</tt>, <tt>atomic_rm_rf_tmp()</tt>. </li>
</ul>

<h2> in 2.3.6.1 </h2>

<ul>
 <li> No functional changes. </li>
</ul>

<h2> in 2.3.6.0 </h2>

<ul>
 <li> New function: <tt>openreadnclose_nb</tt>. </li>
</ul>

<h2> in 2.3.5.2 </h2>

<ul>
 <li> No functional changes. </li>
</ul>

<h2> in 2.3.5.1 </h2>

<ul>
 <li> No functional changes. </li>
</ul>

<h2> in 2.3.5.0 </h2>

<ul>
 <li> New functions: <tt>bitarray_count()</tt>, <tt>openwritevnclose_at()</tt> </li>
</ul>

<h2> in 2.3.4.0 </h2>

<ul>
 <li> New function: <tt>stat_at()</tt> </li>
 <li> The rest of the changes are bugfixes or QoL. </li>
</ul>

<h2> in 2.3.3.0 </h2>

<ul>
 <li> New sha512 functions, see <tt>skalibs/sha512.h</tt> </li>
</ul>

<h2> in 2.3.2.0 </h2>

<ul>
 <li> New macro: <tt>gid0_scan()</tt> </li>
</ul>

<h2> in 2.3.1.3 </h2>

<ul>
 <li> Bugfix release, no functional changes. </li>
</ul>

<h2> in 2.3.1.2 </h2>

<ul>
 <li> The child_spawn* family of functions now resets all signals
to their default values when spawning a program on systems with
<a href="http://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_spawn.html">posix_spawn()</a>.
This should not change anything - it's just paranoia. </li>
 <li> Minor bugfixes. </li>
</ul>

<h2> in 2.3.1.1 </h2>

<ul>
 <li> Bugfix release, no functional changes. </li>
</ul>

<h2> in 2.3.1.0 </h2>

<ul>
 <li> wait_status() now returns 256 + signal number when WIFSIGNALED(). </li>
 <li> new macro wait_estatus() to get WIFSIGNALED information in an exit code. </li>
 <li> new functions in djbunix.h: hiercopy(), hiercopy_tmp() </li>
</ul>

<h2> in 2.3.0.1 </h2>

<ul>
 <li> wait_status() now returns 256 (instead of 126) when WIFSIGNALED(). </li>
</ul>

<h2> in 2.3.0.0 </h2>

<ul>
 <li> buffer_getvall and buffer_putvall have a different interface. (And now work.) </li>
 <li> buffer_read and buffer_write are now deprecated. </li>
 <li> various siovec additions, such as siovec_trunc </li>
</ul>

<h2> in 2.2.1.0 </h2>

<ul>
 <li> unixconnection added. </li>
 <li> sig_name and sig_number added. </li>
</ul>

<h2> in 2.2.0.0 </h2>

<ul>
 <li> TAI64 and TAI64N conversion functions revisited.
API slightly changed, made more consistent. </li>
</ul>

<h2> in 2.1.0.0 </h2>

<ul>
 <li> unixmessage_drop added, part of unixmessage/skaclient hardening against fd leakage </li>
 <li> unixmessage_sender_flush return code aligned with the convention in the rest of skalibs </li>
 <li> unixmessage_sender_flush now handles short writes </li>
 <li> skaclient_start(_async) prototype changed: now takes an option argument </li>
</ul>

<h2> in 2.0.0.0 </h2>

<ul>
 <li> The packaging system has completely changed. </li>
 <li> Programs should now link with <tt>-lskarnet</tt> followed by the appropriate
sysdeps links. </li>
 <li> No compatibility is ensured. Most APIs haven't changed, but no guarantee
is offered. </li>
 <li> The most important change is probably the disparition of <tt>struct tai</tt>
and <tt>struct taia</tt>, replaced with the <tt>tai_t</tt> and <tt>tain_t</tt>
types. Attosecond precision has been removed - processor speed is almost capped now,
and it looks like nanosecond precision will be enough for the foreseeable future. </li>
 <li> Buffer implementation has changed, and some interfaces too, mainly the
buffer_flush and bufalloc_flush return code. </li>
 <li> skaclient, skalibs' client-server communication suite, has been
entirely reimplemented: it's now using the new "unixmessage" set of primitives
for easier fd-passing. </li>
</ul>

</body>
</html>
